package com.rich.live.mapper;

import com.rich.common.result.CommonResponse;
import com.rich.live.pojo.TbLive;
import com.rich.live.vo.LiveVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author hu
 * @version 1.0
 * @date 2021/08/14 18:51
 */
@Mapper
public interface LiveMapper {

    /**
     * 分页+模糊查询
     *
     * @param liveVo
     * @return List<TbLive>
     */
    List<TbLive> selectByExample(@Param("liveVo") LiveVo liveVo);

    /**
     * 创建直播
     *
     * @param live
     */
    void addLive(TbLive live);

    /**
     * 查询当前直播信息
     *
     * @param id
     * @return TbLive
     */
    TbLive findOne(Long id);

    /**
     * 逻辑删除
     *
     * @param id
     */
    void deleteById(Long id);


    /**
     * 开启关闭直播
     *
     * @param id
     * @param violation
     */
    void onAndOff(@Param("id") Long id, @Param("violation") String violation);

    /**
     * 当前直播人和在线人数
     * @param id
     * @return CommonResponse
     */
    CommonResponse liveDetails(Long id);

    /**
     * 退出直播间 在线人数+1
     *
     * @param id
     */
    void liveInfo(Long id);

    /**
     * 退出直播间 在线人数-1
     *
     * @param id
     */
    void liveExit(Long id);

    /**
     * 拉流
     * @param id
     * @return CommonResponse
     */
    CommonResponse la(Long id);

    /**
     * 不限、正在直播、精彩回放查询
     *
     * @param status
     * @return List<TbLive>
     */
    List<TbLive> allLive(@Param("status") String status);

    /**
     * 精彩回放点击量
     * @param id
     */
    void updatePlayNum(@Param("id")Long id);

    /**
     * 结束直播 修改状态
     *
     * @param live
     */
    void startStatusById(TbLive live);

    /**
     * 添加录播地址
     *
     * @param id
     * @param filePath
     */
    void addLivePlayBack(@Param("id") Long id, @Param("filePath") String filePath);

}
